/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.Conexao;
import DAO.TemaDao;
import bean.Tema;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author fernando
 */
@ManagedBean
@SessionScoped
public class TemaBean implements Serializable{

    /**
     * Creates a new instance of TemaBean
     */
    public TemaBean() {
        this.tema = new Tema();
        this.temaDao = new TemaDao();
        
        
    }
    
    public void novoTema(){
        this.temaDao = new TemaDao();
        tema = new Tema();
        this.carregarTemas();
    }

    public TemaDao getTemaDao() {
        return temaDao;
    }

    public void setTemaDao(TemaDao temaDao) {
        this.temaDao = temaDao;
    }

    public Tema getTema() {
        return tema;
    }

    public void setTema(Tema tema) {
        this.tema = tema;
    }

    public void setTemas(DataModel<Tema> temas) {
        this.temas = temas;
    }

    public PreparedStatement getPs() {
        return ps;
    }

    public void setPs(PreparedStatement ps) {
        this.ps = ps;
    }

    public boolean isSucesso() {
        return sucesso;
    }

    public void setSucesso(boolean sucesso) {
        this.sucesso = sucesso;
    }

    public Conexao getConexao() {
        return conexao;
    }

    public void setConexao(Conexao conexao) {
        this.conexao = conexao;
    }
    
    public List<Tema> getListaTemas() {
        if(listaTemas == null){
            this.carregarTemas();
        }
        return listaTemas;
    }

    public void setListaTemas(List<Tema> listaTemas) {
        this.listaTemas = listaTemas;
    }
    
    
    public String cadastroTema()
    {
        String resultado = "";
        
        temaDao = new TemaDao();
        
        System.out.println(tema.getTema());
      
        
        sucesso = temaDao.cadastrarTema(tema);
        
        if(sucesso)
        {
            this.novoTema();
            this.carregarTemas();
            return "/cadastros/acaoSucesso";
        }else{
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não foi possível cadastrar:", "Palavra-chave já cadastrada!"));
        }
        
        return resultado;
    }
    
    public void selecionar()
    {
        tema = temas.getRowData();
    }

    public DataModel<Tema> getTemas() {
        if(temas == null){
            this.carregarTemas();
        }
        return temas;
    }
    
    public String removerTema() {
        System.out.println("ID" + tema.getId());
        System.out.println("Tema" + tema.getTema());
        String resultado = "/cadastros/acaoErro";
        temaDao = new TemaDao();
        sucesso = temaDao.removerTema(tema);

        if (sucesso) {
            this.carregarTemas();
            this.novoTema();
            return "/cadastros/acaoSucesso";
        }

        return resultado;
    }
    
    public String editarTema()
    {
        String resultado = "/cadastros/acaoErro";
        
        temaDao = new TemaDao();
        System.out.println(tema.getId());
        System.out.println(tema.getTema());
       
        sucesso = temaDao.alterarTema(tema);
        
        if(sucesso)
        {
            this.carregarTemas();
            this.novoTema();
            resultado = "/cadastros/acaoSucesso";
        }
        
        return resultado;
    }
    
    public void carregarTemas(){
        temaDao = new TemaDao();
        listaTemas = temaDao.listarTemas();
        temas = new ListDataModel<Tema>(listaTemas);
    }
    
    
    
    private TemaDao temaDao = new TemaDao();
    private Tema tema;
    private DataModel<Tema> temas;
    private List<Tema> listaTemas;
    private PreparedStatement ps;
    private boolean sucesso = false;
    private Conexao conexao;
    
}
